Systems and methods for communicating downhole data

ABSTRACT

Systems and methods for communicating downhole signals using a mud pulser. The method includes encoding data collected from a downhole sensor as symbols into electrical pulses received by the mud pulser; transmitting the electrical pulses as pressure pulses through using the mud pulser; converting the pressure pulses into full wave pressure signals; processing the full wave pressure signals to recover the symbols; and decoding the symbols to provide the data.

This is a United States non-provisional patent application claiming priority to U.S. provisional Patent Application Ser. No. 62/414,556, the entirety of which is hereby incorporated by reference.

FIELD OF THE INVENTION

The invention relates to systems and methods for communicating downhole data.

BACKGROUND

In resource exploration, drill strings are used for drilling the wellbore and assessing downhole conditions. A typical drill string includes a bit, followed by a series of inter-connected downhole tools. Directly above the bit, there are “at-bit” tools which can be connected together with direct electrical contacts. Above those tools is the mud motor which generally blocks direct electrical connections. Above the mud motor, there is a second set of inter-connected downhole tools. Because direct wire contacts are blocked by the motor, communication between the two sets of tools is often achieved using electromagnetic (EM) pulses on the outside of the drill string.

Above the downhole tools, there is a long series of pipe sections reaching to the surface and the drilling rig. Mud is pumped down this pipe at a high pressure and this mud turns the mud motor and flows through the bit to help cut the borehole and clear the cuttings at the borehole.

Many downhole tools are used to acquire data about the environment downhole (e.g., information about the formation) and this data needs to be transmitted to the surface. The information can be used in different ways. For instance, a human operator may use this data to determine what needs to be done to steer the entire drill string towards the desired target.

The downhole tools are generally powered with some combination of batteries and generators which turn the flow of mud into electrical power.

There are generally five kinds of pulses that are used to transmit data from downhole to the surface: mud pulses, EM pulses, sonic pulses, and direct wire connections. Mud pulses periodically restrict the flow of drilling fluid which causes pressure variations which can be detected on the surface. EM pulses use low frequency radio waves to send information upwards. Sonic pulses send sound waves into the metal body of the pipe to be detected on the surface. Direct wire connections are not used during drilling because they would be destroyed and all of the other communication mediums are very slow (i.e., measured in bits per second), and so there is a strong desire to transmit more data to the surface.

SUMMARY OF THE DISCLOSURE

One aspect of the invention provides a method for communicating downhole signals using a mud pulser. The method includes the steps of: (a) encoding data collected from a downhole sensor as symbols into electrical pulses received by the mud pulser; (b) transmitting the electrical pulses as pressure pulses through using the mud pulser; (c) converting the pressure pulses into full wave pressure signals; (d) processing the full wave pressure signals to recover the symbols; and (e) decoding the symbols to provide the data.

In some embodiments, the mud pulser is a bottom mount linear pulser.

In some embodiments, the symbols comprise a cyclic block code having four time slots per symbol. In some embodiments, the data comprises binary data.

In some embodiments, the data is encoded by a directional unit in a drill string. In some embodiments, the data comprises at least one data frame having a synchronization header followed by information interspersed with at least one synchronization marker. In some embodiments, the synchronization header does not correlate to regular symbols used in communication. In some embodiments, the synchronization marker comprises a long statistically unlikely sequence different from the data and the synchronization header.

In some embodiments, the data frame comprises a survey header following the synchronization header. In some embodiments, the survey header comprises meta-data describing subsequent information. In some embodiments, the subsequent information comprises directional unit information. In some embodiments, the directional unit information comprises orientation of the directional unit or status flags from any component in the drill string.

In some embodiments, the data frame comprises a toolface header following the synchronization header. In some embodiments, the toolface header comprises data from any sensor or system in the drill string. In some embodiments, the data comprises background radiation level, vibration level, or pressure in the annulus, formation resistivity, gamma spectra, rotational orientation, RPM, or directional radiation levels.

In some embodiments, the pressure pulses are converted into pressure signals by at least one pressure transducer. In some embodiments, converting the pressure pulses comprises combining readings from two or more pressure transducers to remove pump noise.

In some embodiments, processing the full wave pressure signals comprises pre-filtering the full wave pressure signals. In some embodiments, pre-filtering the full wave pressure signals comprises using an exponentially weighted moving average filter to determine the average pressure value and subtracting average pressure value from each value of the full wave pressure signals. In some embodiments, pre-filtering the full wave pressure signals comprises using a low pass filter to remove high frequency noise in the full wave pressure signals. In some embodiments, a neural network is used to adjust parameters of the pre-filtering of the full wave pressure signals or assist in decoding the symbols.

In some embodiments, processing the full wave signals comprises evaluating the full wave signals for correlations to synchronization header, symbols, and synchronization markers.

In some embodiments, decoding the symbols comprises: correlating a value from the full wave pressure signals to possible symbols; assigning confidence to each possible symbol; selecting the symbol with the highest confidence; and assembling the symbol into packets.

In some embodiments, the method comprises further steps of calculating parity of the packets, and interpreting the packet as data value where parity is correct. In some embodiments, calculating parity comprises adding a parity symbol into the data packet and comparing the calculated parity with the parity symbol. In some embodiments, the parity symbol comprises two parity bits, with the first bit corresponding to the first few symbols in the data and the second bit corresponding to the rest of the data.

In some embodiments, the full wave pressure signals are stored in their entirety into a single file and processing is performed after a run of the drill string is complete.

In some embodiments, the processing of the full wave pressure signals and the decoding of the symbols are performed by a processor.

In some embodiments, the method is used for a first set of data at a first frequency and a second set of data at a second frequency.

In another implementation, there is provided a method of communicating downhole data using any one of the foregoing methods for a first set of data at a first frequency and using any one of the foregoing methods for a second set of data at a second frequency.

In another implementation, there is provided a method of communicating downhole data using any one of the foregoing methods for a first set of data using mud-pulse communication and using any of one of the foregoing methods for a second set of data using EM-pulse communications.

BRIEF DESCRIPTION OF THE DRAWINGS

Features and advantages of the embodiments of the present invention will become apparent from the following detailed description, taken in combination with the appended drawings, in which:

FIG. 1 illustrates a symbol encoding system according to an embodiment of the present disclosure.

FIG. 2 illustrates the possible configurations of the valve of the mud pulser and the corresponding symbols according to an embodiment of the disclosure.

FIGS. 3A to 3C illustrate exemplary packet structures used for drill string information according to an embodiment of the present disclosure.

FIG. 4 illustrates the bit patterns for symbol encoding and possible correction according to an embodiment of the present disclosure.

FIG. 5 illustrates the synchronization and data frame structure according to an embodiment of the present disclosure.

FIG. 6A illustrates a first synchronization header pattern according to an embodiment of the present disclosure.

FIG. 6B illustrates a second synchronization header pattern according to an embodiment of the present disclosure.

FIG. 7 illustrates pre-filtering steps performed by a controller according to an embodiment of the present disclosure.

FIG. 8 illustrates a first decimation and filtering stage performed by a controller according to an embodiment of the present disclosure.

FIG. 9 illustrates a second decimation and filtering stage performed by a controller according to an embodiment of the present disclosure.

FIG. 10 illustrates base band data processing performed by a controller according to an embodiment of the present disclosure.

FIG. 11 illustrates decoding of the symbols performed by a controller according to an embodiment of the present disclosure.

FIG. 12 illustrates data reconstruction performed by a controller according to an embodiment of the present disclosure.

FIG. 13 illustrates the transmission of reconstructed data using a server according to an embodiment of the present disclosure.

FIG. 14 illustrates communication between the controller and the Web Socket server according to an embodiment of the present disclosure.

FIG. 15 illustrates an exemplary graphical user interface according to an embodiment of the present disclosure.

In the description which follows, like parts are marked throughout the specification and the drawings with the same respective reference numerals.

DETAILED DESCRIPTION OF THE EMBODIMENTS

The description which follows and the embodiments described therein are provided by way of illustration of an example or examples of particular embodiments of the principles of the present invention. These examples are provided for the purposes of explanation and not limitation of those principles and of the invention. In some instances, certain structures and techniques have not been described or shown in detail in order not to obscure the invention.

The embodiments described herein relate to a method for transmitting downhole signals using a mud pulser. The method includes the steps of: (a) encoding data collected from a downhole sensor as symbols into electrical pulses received by the mud pulser; (b) transmitting the electrical pulses as pressure pulses through use of the mud pulser; (c) converting the pressure pulses into full wave pressure signals; (d) processing the full wave pressure signals to recover the symbols; and (e) decoding the symbols to provide the data.

Downhole tools are used in the drilling of wellbores in formation during the resource exploration and extraction processes. Typically, there are a number of downhole sensors and systems connected to a directional unit and a mud pulser. The directional unit senses the orientation of the drill string and also collects the data from the other systems. The directional unit then encodes this information into a series of electrical pulses which the mud pulser translates into open and close positions of its valve.

The opening and closing of the valve of the mud pulser creates pressure pulses which travel up the flowing column of mud to the surface where one or more pressure transducers are located.

Generally, the pressure transducers convert the pressure to electrical signals which are digitized and sent to a controller at the surface. The controller interprets the pressure pulses as information from the various sensors and systems downhole. In order for the controller to be able to interpret the pressure pulses as information from the various sensors and systems, the directional unit will encode the data in a way that the controller expects, and the controller needs to be able to see through the noise and distortion introduced by the flowing mud and the pumps that push the mud downhole.

The downhole tools used to create mud pulses generally fall into two types: top mount and bottom mount. The top mount pulsers are put on the very top of the set of downhole tools above the motor, while bottom mount pulsers are placed on the bottom of that same tool set. Typically, top mount pulsers use rotary fins to restrict the mud flow by any desired amount, while bottom mount pulsers use an on/off valve to create a pressure pulse. The top mount pulsers are often called rotary pulsers, while the bottom mount pulsers are called linear pulsers because of the linear motion which turns the valve on/off.

For bottom mount pulsers, there are industry standard encoding schemes classified as M-ary encodings, which are used to decide how information is to be written in mud pulses. M-ary encoding uses symbols which encode M bits per symbol. For example, binary or ‘2-ary’ communication uses the symbols ‘0’ and ‘1’ to encode two bits. It is also possible to encode information into symbols of any length “M”. The advantage is that the symbols are easier to recognize in noisy situations but the disadvantage is that the speed of communication or ‘bandwidth’ is reduced.

In the context of drilling, M-ary is used to speak about encoding schemes which have multi-bit symbols that are made of discrete on/off pressure pulses. These types of pulses are easily made with an on/off bottom mount pulser.

Top mount pulsers can also be used to generate the same on/off pulses as bottom mount pulsers, but because they can rotate their fins in small increments they are not restricted to producing on/off style pulses. The result is that these top mount rotary pulsers can produce much more complex waveforms and encode information in the shape of those waveforms. This type of communication is called “full wave” because the resulting signal does not look like a series of on/off pulses but rather as a continuous variation in the mud pressure. The advantage of this full wave communication is that with small motions of the fins, more information can be encoded.

While a rotary pulser can provide full wave communication, from a tool string design perspective, in some embodiments, it may be more advantageous to use a linear pulser. For instance, in some designs, when a mud generator is used for downhole power instead of a battery, the mud generator will fit on top of the tool string and the rotary pulser cannot be used.

In the systems and methods described herein, full wave pressure signals are communicated to the surface using a bottom mount pulser. In some embodiments, the bottom mount pulser is cycled at a speed such that the resulting pressure signal received at the surface is a continuous wave.

FIG. 1 illustrates a symbol encoding system 6 according to an embodiment of the present disclosure. In this embodiment, the encoding system uses a cyclic block code made up of four time slots per symbol. As illustrated, blocks 10 correspond to times when the valve is closed and the four symbols are labelled “01”, “00”, “10”, and “11” according to their binary values. Each symbol shown as block 10 is generated from the adjacent symbol by shifting the pattern one time slot. The patterns shown as blocks 12 correspond to situations that differ from a valid symbol by the flipping of one time slot. The patterns shown as blocks 14 correspond to situations that differ from a valid symbol by the flipping of two time slots.

FIG. 2 illustrates the possible configurations of the valve of the mud pulser and the corresponding symbols in symbol encoding system 6 according to one embodiment of the present disclosure. “C” means the valve of the mud pulser is closed and “0” means the valve of the mud pulser is open. As shown in FIG. 2, in this embodiment of the symbol encoding system 6, the valid symbols are symbol “01” (Open, Open, Closed, Closed); symbol “00” (Closed, Open, Open, Closed); symbol “10” (Closed, Closed, Open, Open); and symbol “11” (Open, Closed, Closed, Opened). Other configurations would be invalid symbols. For instance, if the pattern received at the surface by the controller is Open, Open, Closed, Open (OOCO), it is not a valid symbol but is most likely a corruption of either the symbol “01” (OOCC) or “11” (OCCO).

FIG. 3 illustrates an exemplary data packet structure for the symbol encoding system 6 according to one embodiment of the present disclosure. FIG. 3A illustrates an exemplary packet structure with a 11 bit pattern; FIG. 3B illustrates an exemplary packet structure with an 8 bit pattern; and FIG. 3C illustrates an exemplary packet structure with a 15 bit pattern. In some embodiments, any of inclination (Inc), azimuth (Azm), gravity (Gray), magnetic toolface (MagF), magnetic dip angle (DipA), and temperature of the drill string or components in the drill string (11P) is encoded in an 11 bit pattern. In some embodiments, any of battery voltage (BatV), automatic toolface (aTFA), and gamma photons detected per second (Gama) is encoded in an 8 bit pattern. In some embodiments, annulus pressure while drilling (Apwd) is encoded in a 15 bit pattern. A person skilled in the art will program the directional unit to encode different types of information using the applicable bit patterns. In this embodiment, all of the data from the downhole tools is converted from binary into symbols. For example, a data value, which may correspond to the inclination of the tool string, that is 12 binary bits long, is to be transmitted to the surface. This value could be translated into 6 symbols in a total of 24 time slots. As shown in FIGS. 3A to 3C, for error correction purposes, a further symbol 16 (containing 2-bits of information) for parity can be added. The data value and the parity symbol together form a data packet. The first bit in the parity symbol 16 is calculated downhole as the exclusive or (EXOR) of the data in the first two symbols of the value while the second parity bit corresponds to the EXOR of the rest of the bits in the value.

When the controller receives the full wave pressure signals, it correlates what it receives with the possible configurations as shown in FIG. 2. The controller then assigns a probability to the pressure information corresponding to each of the possible symbols. Once it has received enough symbols to complete a packet, the parity is calculated. If the received parity and computed parity symbols are the same, then the value is marked as “Parity OK”. Otherwise, the parity information will be used by the controller to either correct the value or mark the value as “Parity FAILED”.

FIG. 4 illustrates an embodiment of parity correction and failure according to an embodiment of the disclosure. In FIG. 4, the numbers 20 are the desired correlation outcomes, namely OOCC, OCCO, COOC, and CCOO. The decoded bits can be assigned as: for COOC, the decoded value is 00; for OOCC, the decoded value is 01; for CCOO, the decoded value is 10; and, for OCCO, the decoded value is 11.

The numbers 22 are directly between two valid symbols and can be associated with one or the other depending on both the correlation probabilities and parity check information. Therefore, for COCC or OOOC, the decoded value could be 00 or 01; for OCCC or OOCO, the decoded value could be 01 or 11; for OCOO or CCCO, the decoded value could be 11 or 10; and for COOO or CCOC, the decoded value could be 10 or 00.

The numbers 24 are the invalid patterns OCOC, COCO, OOOO, and CCCC in the middle of the circle and cannot be associated with a possible decoded value. These values are not used for further processing or analysis by the controller.

When decoding for symbols from the full wave pressure signals, the controller chooses one of the four valid symbols based on the correlation probability value (even if a non-symbol pattern has the highest correlation probability). In the event there is a parity failure, the controller associates one of the numbers 22 in FIG. 4 with the valid decoded symbol (i.e., number 20) which was not chosen last time. The controller then re-runs the parity check for the newly associated number 20.

Where the first parity bit (which corresponds to the first two symbols) fails but the second parity bit does not fail, the parity symbol 16 and the decoding of the first two symbols are re-evaluated. From the decoded symbols, the controller checks the one with lowest confidence. If the first choice was one of the numbers 22, then the controller modifies its interpretation of the symbol decoded with the least confidence. Parity is then re-checked to determine whether changing the decoded number resolves the problem. If the first choice did not lead to correction, then the symbol with the next least confidence is used, and the process is repeated. In this embodiment, if a parity correction was made, the controller marks the corrected data as “Parity Corrected” and uses it for further processing and analysis. If no correction can be found which yields a packet with valid parity, then the data is marked as “Parity FAILED” and the data is not used. In other embodiments, other types of marking known to the person skilled in the art may be used. Where only the second bit of the parity symbol 16 fails, the controller takes the foregoing steps for the second group of data.

If there is an error in both bits of the parity symbol 16, then a different set of steps may be taken by the controller. In these steps, the controller first checks if the symbol carrying the parity information has the least confidence from both groups. If so, the bits are flipped 180 degrees on the diagram as shown in FIG. 2 and the parity is rechecked to determine if this fixes the parity error. If yes, then both of the bits in parity symbol 16 are flipped and the controller marks the data as “Parity Corrected”.

If there is no solution in the parity symbol 16, the controller may attempt correction with the first two bits of the data set based on the process as described above. If the parity of the packet has not yet been corrected, the controller may attempt further correction with the second group of symbols using the process as described above.

To allow the controller to interpret the pressure pulses created by the mud pulser, synchronization is necessary. FIG. 5 illustrates exemplary synchronization and data frame structures according to an embodiment of the present disclosure.

All communications from the directional unit to the surface start with a synchronization header followed by information interspersed with synchronization markers. In one embodiment, the synchronization header is selected in such a way that it does not correlate to the regular symbols used in communication, and is long. This structure of the synchronization header makes it distinctive and statistically unlikely, so that when the controller receives it, the controller can know that a data stream is starting. In some embodiments, the synchronization header has the pattern as illustrated in FIG. 6A, which was previously disclosed in JPL Communication Systems Research Section, JPL Deep Space Network Progress Report, 42-26. In some embodiments, the synchronization header has the pattern as illustrated in FIG. 6B, which was previously disclosed in IEEE Transactions on Communications, Vol. Com-20, No. 2, April, 1972. In some embodiments, other types of synchronization headers may be used. In some embodiments, different types of synchronization headers, including those as illustrated in FIGS. 6A and 6B, are used in combination.

In some embodiments, the synchronization marker is also a long statistically unlikely sequence which is different from both the data and the header. The synchronization markers are interspersed in long communications to give the controller a chance to adjust timings and

start decoding properly if the synchronization header was not properly received or some other error occurred.

In the embodiment illustrated in FIG. 5, the data frame starts with a synchronization header and is followed by the survey header. In this embodiment, the survey header indicates whether or not the directional unit will be sending up information acquired while the drill string was lying still. In some embodiments, the survey header comprises describing subsequent information in the data frame. After the survey header, the data frame includes a toolface header (TH) which indicates if the directional unit will be sending up information while the drill string is in operation. The precise nature of the survey and toolface information can vary. While running, the marker is sent by the directional unit after each set of “N” toolface data sets. In one embodiment, “N” is equal to 10. In other embodiments, “N” is less than 10. In other embodiments, “N” is greater than 10. In some embodiments, survey information includes the orientation of the drill string and status flags for the various sensors. In some embodiments, toolface data includes drill string orientation, background radiation level, vibration level, and pressure. In some embodiments, any sensor data, including formation resistivity, spectral gamma, rotation per minute of the drill string, rotary steerable piston pressure of the rotary steerable tool (if present), and the like, can be encoded in the toolface data or the survey information.

In some embodiments, information from the drill string is communicated in the survey sequence (as soon as the mud-pump starts). In some embodiments, information from the drill string is communicated by the directional unit in the logging sequence, which continues in a loop after the survey sequence.

In some embodiments, an auto-survey sequence may be used. The auto-survey sequence interrupts the logging sequence after some interval and repeats the survey sequence information.

In some embodiments, the directional unit of the drill string can be programmed with 4 or more survey sequences and 4 or more logging sequences. In some embodiments, these sequences can be selected by downlinking (e.g., sending information down to the directional unit by manipulating the mud pumps, sending an EM signal, or the like).

In one embodiment, the operator of the drill string knows with certainty when the directional unit will send up a synchronization header after the pumps have been turned on. In some embodiments, a window for time is chosen to search for the synchronization header and the moment of maximum correlation is presumed to be the moment of reception. In some embodiments, operators are warned with display flags where the correlation between the synchronization header and the received signal did not hit a pre-programmed limit. In some embodiments, data values displayed to the operator are coloured according to their parity results (for example, black for “Parity OK”, blue for “Parity Corrected” and red for “Parity FAILED”). Other manners of communicating the parity result known to a person skilled in the art may also be used.

Before the synchronization sequences or symbols can be read, the controller will perform processing on the digitized pressure readings.

In one embodiment, if there are two pressure transducers placed some distance apart on the pipe carrying mud downhole, the first step is to combine the two readings to cancel as much pump noise as possible. After that, the controller conducts pre-filtering of the digital pressure values using the process as shown in FIG. 7. In this embodiment, the controller uses an exponentially weighted moving average (EWMA) filter to determine the average pressure value (rcDCestimate) which is subtracted from the digitized pressure readings. In some embodiments, the controller uses another EWMA filter to smooth the resulting signals, and the controller applies a low pass filter to remove high frequency noise from the digitized pressure readings. In some embodiments, the controller uses the EWMA filter to determine the average pressure value when there is only input from one transducer.

In some embodiments, the controller conducts further processing of the digitized pressure readings. FIGS. 8 and 9 illustrate further filtering to remove frequency components in the readings that cannot be part of the stream of signals or synchronization.

FIG. 8 describes a first decimation stage undertaken by the controller. Upon completion of the first decimation stage, the process illustrated in FIG. 9, the second decimation stage, is undertaken by the controller. Decimation is the process of reducing the sampling rate of a signal that is known to a person skilled in the art. Decimation reduces the data rate or the size of the data by reducing high-frequency signal components with a low-pass filter and down-sampling the filtered signal. The first and second decimation stages as shown in FIGS. 8 and 9 filter and remove frequency components in the signal that could not be part of the stream of signal or synchronization sequences.

The processes as described in FIGS. 7, 8, and 9 constitute pre-processing to provide the minimum quantity of numbers which retain the signal information for input into the correlation routines. In some embodiments, over-sampling at 500 samples per second is done to capture all of the spectral information in the signal. Higher frequencies are filtered out and the average pressure value (rcDCestimate) removed by the controller using the processes as shown in FIG. 7. The decimation processes illustrated in FIGS. 8 and 9 further remove aliasing and reduce the number of data points that have to be processed at later stages. Once the input data stream (i.e., the digitized pressure readings) has had all unnecessary frequency components removed, the controller begins the decoding process of the data stream.

In some embodiments, a neural network is used to adjust parameters of the pre-filtering of the full wave pressure signals or assist in decoding the symbols.

In the illustrated embodiment, the controller receives the cleaned input data stream with an estimate of the average pressure value and performs the process as described in FIG. 10 on the input data stream. In this embodiment, the controller looks for correlations to the synchronization sequences and symbols. The result is a stream of decoded packets with parity information.

In the illustrated embodiment, the controller interprets the decoded packets as data values using a “BitCollectorInterpreter” which operates in a manner based on the directional unit's configuration for communicating downhole signals. This knowledge about the directional unit is determined before the drill string is lowered into the ground and is stored in the “ConfigurationDataSt” shown in FIG. 10. The BitCollectorInterpreter is a component that takes the decoded bits and bytes after parity correction and associates them with their meanings. In some embodiments, some bytes describe the inclination, others describe the azimuth, and yet others describe some other types of information. The precise correspondence between bits and their meanings changes from job to job and is described by the survey and logging sequences. An example survey sequence might be: “GV0:u12.0:P GV1:u12.0:P GV2:u12.0:P Inc:11:P Azm:12:P Gray:10:P MagF:10:P DipA:10:P BatV:8:P Bat2:P” which describes that the first 12 bits are generic variable 0 which corresponds to the rotary steerable tool's inclination setting encoded in ‘u’ format, followed by a nested parity bit and then followed by other data variables. The BitCollector Interpreter is preprogrammed with instructions on how to assign meaning to the bits. The BitCollectorInterpreter of the controller receives the bits, follows pre-programmed instructions, and assigns meaning to the decoded data. Once the meanings are assigned, they can be displayed to a user by a graphical user interface. In some embodiments, the interpreted values are shown to the human operator by the graphical user interface (GUI). In some embodiments, the interpreted values are stored into memory and communicated to other devices. In most embodiments, both are done at the same time.

Within the base band data processing as described herein, the controller decodes the symbols and assembles the decoded symbols into data packets. In one embodiment, the controller decodes the symbols using the processes as shown schematically in FIG. 11. Generally, the controller takes the values from a circular buffer and computes the cross-correlation between the signal and possible patterns, such as the configurations as shown in FIG. 2. The controller uses discrete formula commonly known to a person skilled in the art to compute the cross-correlation between the signal and possible patterns. In the illustrated embodiment, the cross-correlation provides 16 numbers labeled 0 to 15 and at the “sort-descendent” step, these numbers are sorted by the controller in descending order. Out of these 16 possibilities, only 4 are valid symbols and the controller selects the symbol with the highest correlation to the received signal for this time slot. This symbol is then added to the received data. The received data is then assembled using the processes shown schematically in FIG. 12.

FIG. 12 schematically illustrates the assembly of decided symbols into data packets according to one embodiment. Generally, in data reconstruction, the symbols are assembled into packets, the parity is computed, and parity corrections are applied as described herein. The result is a data packet marked with its meaning and its parity status (e.g., OK, ERROR, or CORRECTED). The controller uses the “BitAssembler” to assemble the data packet. These packets are then interpreted as values and displayed to the user.

Once the downhole data has been interpreted by the controller, the data can be displayed or used in a variety of ways. In one embodiment, the interpreted downhole data is logged and distributed over first the local area network (LAN) and then over the wide area network (WAN). As illustrated in FIG. 13, the data from the controller 50 is first sent to a WebSocket server 52 operating on the well site 45, such as in the same computer as the controller 50. Other devices 54 on the same well site can connect to this server via communication frameworks known to a person skilled in the art, such as WiFi, Bluetooth, and the like, and view the same through a graphical user interface such as that shown in FIG. 15. The Web Socket server 52 can also make an attempt to connect to a second server 58 using the Internet. If successful, other devices 56 could view the same data provided they have the correct credentials and can connect to the Internet.

In one embodiment, the controller communicates with the Web Socket server using the processes illustrated in FIG. 14. WebSockets are used to provide a communication interface compatible with the standard TCP port for HTTP. The result is that the data can flow to a display within a standard web browser or to an app in a device like a smart phone or tablet. The main_FPSR.cpp produces a stream of data values associated with their meanings (such as inclination (Inc), azimuth (Azm), gamma photons detected per second (Gama), and the like). This information is coupled to the WS_Q_FPSR.cpp program which makes it available over a websocket interface. The chat server is another program that connects to the WS_Q_FPSR.cpp program, reads the data stream, and distributes it to all of the terminals that are connected to the chat server. In some embodiments, these terminals have graphical user interfaces similar to that as shown in FIG. 15. In some embodiments, the data is displayed differently. Multiple users can then view and interact with the data as it is being decoded through the Internet using different computing devices, such as personal computers, tablets, smart phones, and the like.

In one embodiment, the data can be displayed using a graphical user interface 100 as illustrated in FIG. 15. In this embodiment, the graphical user interface shows the filtered pump pressure, the interpreted values, and a rosebud to help the operator visualize the situation. In some embodiments, the system comprises a login/password protection feature to ensure only authorized individuals may view the downhole data.

While a number of exemplary aspects and implementations have been discussed above, those skilled in the art will recognize certain modifications, permutations, additions, sub-combinations thereof, including:

-   -   Data compression algorithms may be applied to data being pulsed         up by the mud pulser.     -   While only one pulser is discussed in the embodiment described         herein, more than one pulser may be used to communicate the         data.     -   Where more than one pulser is used, each pulser may pulse the         information at different frequencies.     -   While one controller is discussed in the embodiment described         herein, more than one controller or a combination of central         controller and subcontroller may be used to perform the         conversion, processing, filtering, and decoding steps described         herein.     -   The information from each run of the drill string may be stored         in a set of files and analyzed at a later time.     -   In some embodiments, a pause marker may be introduced between         toolface sequences and the synchronization markers in order to         save power downhole when it is not necessary to send continuous         data.     -   Other data computed by the controller relating to the data         stream may be displayed to the operator (e.g., in a graphical         user interface such as that of FIG. 15), including data signal         to noise ratio, quality, confidence, and decoding success. If         any of these values drops, it is a sign that the communication         is problematic.     -   The controller may be part of a surface receiver.

Some advantages of the embodiments described herein include:

-   -   Faster communication may allow more data to reach the surface in         the same amount of time.     -   The method may allow more reliable communication in the presence         of pump noise.     -   The ability to communicate for a period of more than a minute         while the pumps are coming up to pressure reduces time and cost;         the first information can be available in a short time (e.g., 15         seconds) after drilling starts thus reducing the time needed per         survey.     -   The ability to re-synchronize without stopping to re-survey         reduces time and costs.

Unless the context clearly requires otherwise, throughout the description and the claims: “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to”. “Connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof “Herein,” “above,” “below,” and words of similar import, when used to describe this specification shall refer to this specification as a whole and not to any particular portions of this specification. “Or” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list. The singular forms “a,” “an,” and “the” also include the meaning of any appropriate plural forms.

Words that indicate directions such as “vertical,” “transverse”, “horizontal,” “upward,” “downward,” “forward,” “backward,” “inward,” “outward”, “vertical,” “transverse,” “left,” “right,” “front,” “back”, “top,” “bottom,” “below,” “above,” “under,” and the like, used in this description and any accompanying claims (where present) depend on the specific orientation of the apparatus described and illustrated. The subject matter described herein may assume various alternative orientations. Accordingly, these directional terms are not strictly defined and should not be interpreted narrowly.

Embodiments may be implemented using specifically designed hardware, configurable hardware, programmable data processors configured by the provision of software (which may optionally comprise “firmware”) capable of executing on the data processors, special purpose computers or data processors that are specifically programmed, configured, or constructed to perform one or more steps in a method as explained in detail herein and/or combinations of two or more of these. Examples of specifically designed hardware are: logic circuits, application-specific integrated circuits (“ASICs”), large scale integrated circuits (“LSIs”), very large scale integrated circuits (“VLSIs”), and the like. Examples of configurable hardware are: one or more programmable logic devices such as programmable array logic (“PALs”), programmable logic arrays (“PLAs”), and field programmable gate arrays (“FPGAs”)). Examples of programmable data processors are: microprocessors, digital signal processors (“DSPs”), embedded processors, graphics processors, math co-processors, general purpose computers, server computers, cloud computers, mainframe computers, computer workstations, and the like. For example, one or more data processors in a control circuit for a device may implement methods as described herein by executing software instructions in a program memory accessible to the processors.

Processing may be centralized or distributed. Where processing is distributed, information including software and/or data may be kept centrally or distributed. Such information may be exchanged between different functional units by way of a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet, wired or wireless data links, electromagnetic signals, or other data communication channel.

For example, while processes or blocks are presented in a given order, alternative examples may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.

In addition, while elements are at times shown as being performed sequentially, they may instead be performed simultaneously or in different sequences. It is therefore intended that the following claims are interpreted to include all such variations as are within their intended scope.

Software and other modules may reside on servers, workstations, personal computers, tablet computers, image data encoders, image data decoders, PDAs, color-grading tools, video projectors, audio-visual receivers, displays (such as televisions), digital cinema projectors, media players, and other devices suitable for the purposes described herein. Those skilled in the relevant art will appreciate that aspects of the system can be practised with other communications, data processing, or computer system configurations, including: Internet appliances, hand-held devices, wearable computers, all manner of cellular or mobile phones, multi-processor systems, microprocessor-based or programmable consumer electronics (e.g., video projectors, audio-visual receivers, displays, such as televisions, and the like), set-top boxes, color-grading tools, network PCs, mini-computers, mainframe computers, and the like.

The invention may also be provided in the form of a program product. The program product may comprise any non-transitory medium which carries a set of computer-readable instructions which, when executed by a data processor, cause the data processor to execute a method. Program products according to the invention may be in any of a wide variety of forms. The program product may comprise, for example, non-transitory media such as magnetic data storage media including floppy diskettes, hard disk drives, optical data storage media including CD ROMs, DVDs, electronic data storage media including ROMs, flash RAM, EPROMs, hardwired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, or the like. The computer-readable signals on the program product may optionally be compressed or encrypted.

In some embodiments, the invention may be implemented in software. For greater clarity, “software” includes any instructions executed on a processor, and may include (but is not limited to) firmware, resident software, microcode, and the like. Both processing hardware and software may be centralized or distributed (or a combination thereof), in whole or in part, as known to those skilled in the art. For example, software and other modules may be accessible via local memory, via a network, via a browser or other application in a distributed computing context, or via other means suitable for the purposes described above.

Where a component is referred to above, unless otherwise indicated, reference to that component (including a reference to a “means”) should be interpreted as including as equivalents of that component, any component which performs the function of the described component (i.e., that is functionally equivalent), including components which are not structurally equivalent to the disclosed structure which performs the function in the illustrated exemplary embodiments of the invention.

Specific examples of systems, methods and apparatuses have been described herein for purposes of illustration. These are only examples. The technology provided herein can be applied to systems other than the example systems described above. Many alterations, modifications, additions, omissions and permutations are possible within the practice of this invention. This invention includes variations on described embodiments that would be apparent to the skilled addressee, including variations obtained by: replacing features, elements and/or acts with equivalent features, elements and/or acts; mixing and matching of features, elements and/or acts from different embodiments; combining features, elements and/or acts from embodiments as described herein with features, elements and/or acts of other technology; and/or omitting combining features, elements and/or acts from described embodiments.

It is therefore intended that the following appended claims and claims hereafter introduced are interpreted to include all such modifications, permutations, additions, omissions and sub-combinations as may reasonably be inferred. The scope of the claims should not be limited by the preferred embodiments set forth in the examples, but should be given the broadest interpretation consistent with the description as a whole. 

What is claimed is: 1) A method for communicating downhole signals using a mud pulser, the method comprising: encoding data collected from a downhole sensor as symbols into electrical pulses received by the mud pulser; transmitting the electrical pulses as pressure pulses through use of the mud pulser; converting the pressure pulses into full wave pressure signals; processing the full wave pressure signals to recover the symbols; and decoding the symbols to provide the data. 2) The method of claim 1 wherein the mud pulser is a bottom mount linear pulser. 3) The method of claim 1 wherein the symbols comprise a cyclic block code having four time slots per symbol. 4) The method of claim 1 wherein the data comprises at least one data frame having a synchronization header followed by information interspersed with at least one synchronization marker. 5) The method of claim 4 wherein the synchronization header does not correlate to regular symbols used in communication. 6) The method of claim 4 wherein the synchronization marker comprises a long statistically unlikely sequence different from the data and the synchronization header. 7) The method of claim 4 wherein the data frame comprises a survey header following the synchronization header. 8) The method of claim 7 wherein the survey header comprises meta-data describing subsequent information. 9) The method of claim 8 wherein the subsequent information comprises directional unit information. 10) The method of claim 9 wherein the directional unit information comprises orientation of the directional unit, data from the sensors in the drill string, or status flags from any component in the drill string. 11) The method of claim 6 wherein the data frame comprises a toolface header following the synchronization header. 12) The method of claim 11 wherein the toolface header comprises data from any sensor or system in the drill string. 13) The method of claim 11 wherein the data comprises background radiation level, vibration level, pressure in the annulus, formation resistivity, gamma spectra, rotational orientation, RPM, or directional radiation levels. 14) The method of claim 4 wherein the pressure pulses are converted into pressure signals by at least one pressure transducer. 15) The method of claim 14 wherein converting the pressure pulses comprises combining readings from two or more pressure transducers to remove pump noise. 16) The method of claim 4 wherein processing the full wave pressure signals comprises pre-filtering the full wave pressure signals. 17) The method of claim 16 wherein pre-filtering the full wave pressure signals comprises using an exponentially weighted moving average filter to determine the average pressure value and subtracting average pressure value from each value of the full wave pressure signals. 18) The method of claim 4 wherein processing the full wave signals comprises evaluating the full wave signals for correlations to synchronization header, symbols, and synchronization markers. 19) The method of claim 4 wherein decoding the symbols comprises: correlating a value from the full wave pressure signals to possible symbols; assigning confidence to each possible symbol; selecting the symbol with the highest confidence; and assembling the symbol into packets. 20) The method of claim 19 comprising: calculating parity of the packets; and interpreting the packet as data value where parity is correct. 21) The method of claim 20 wherein calculating parity comprises: adding a parity symbol into the data packet; and comparing the calculated parity with the parity symbol. 22) The method of claim 21 wherein the parity symbol comprises two parity bits, with the first bit corresponding to the first few symbols in the data and the second bit corresponding to the rest of the data. 23) The method of claim 1 wherein the full wave pressure signal is stored in its entirety into a single file and processing is performed after a run of the drill string is complete. 24) A method of communicating downhole data comprising: using the method of claim 1 for a first set of data at a first frequency; and using the method of claim 1 for a second set of data at a second frequency. 25) A method of communicating downhole data comprising: using the method of claim 1 for a first set of data using mud-pulse communications; and using the method of claim 1 for a second set of data using EM-pulse communications. 